People are utilizing computing devices for an ever-increasing variety of tasks. This increase not only results in more applications and functions executed by the devices, but also increases the complexity and size of the applications that execute on these devices. Further, many users expect to be able to keep many of these applications open and executing concurrently on a given device. This can lead to various performance issues on the device, such as slow operation due to lack of available processing and/or memory capacity, as well as problems with overheating or battery drainage, among other such issues. While some conventional approaches can terminate processes in certain situations, the terminations typically are not done in an intelligent way that will minimize the impact on usage of the device.